From: Keir Fraser Date: Thu, 6 May 2010 10:52:22 +0000 (+0100) Subject: x86: add .data.page_aligned section X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~12239 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22?a=commitdiff_plain;h=c931e4face0ab47ea749e3e32e7734e90c57d6ba;p=xen.git x86: add .data.page_aligned section ... and move page-aligned data there, instead of having random holes (to fulfill the demanded alignment) in the final image. Signed-off-by: Jan Beulich --- diff --git a/xen/arch/x86/boot/x86_32.S b/xen/arch/x86/boot/x86_32.S index fa183db86c..d86970df4f 100644 --- a/xen/arch/x86/boot/x86_32.S +++ b/xen/arch/x86/boot/x86_32.S @@ -61,6 +61,8 @@ ignore_int: jnz 0b 1: jmp 1b + .data + ALIGN ENTRY(stack_start) .long cpu0_stack @@ -88,6 +90,7 @@ ENTRY(idle_pg_table) .long sym_phys(idle_pg_table_l2) + 2*PAGE_SIZE + 0x01, 0 .long sym_phys(idle_pg_table_l2) + 3*PAGE_SIZE + 0x01, 0 + .section .data.page_aligned, "aw", @progbits .align PAGE_SIZE, 0 /* NB. Rings != 0 get access up to MACH2PHYS_VIRT_END. This allows access to */ /* the machine->physical mapping table. Ring 0 can access all memory. */ diff --git a/xen/arch/x86/boot/x86_64.S b/xen/arch/x86/boot/x86_64.S index 7932f8aaa9..edf7891610 100644 --- a/xen/arch/x86/boot/x86_64.S +++ b/xen/arch/x86/boot/x86_64.S @@ -78,7 +78,8 @@ ignore_int: /*** DESCRIPTOR TABLES ***/ - .align 8, 0xCC + .data + .align 8 multiboot_ptr: .long 0 @@ -95,6 +96,7 @@ idt_descr: ENTRY(stack_start) .quad cpu0_stack + .section .data.page_aligned, "aw", @progbits .align PAGE_SIZE, 0 ENTRY(boot_cpu_gdt_table) .quad 0x0000000000000000 /* unused */ diff --git a/xen/arch/x86/x86_64/compat_kexec.S b/xen/arch/x86/x86_64/compat_kexec.S index da3136f886..6977e3eb5a 100644 --- a/xen/arch/x86/x86_64/compat_kexec.S +++ b/xen/arch/x86/x86_64/compat_kexec.S @@ -151,6 +151,8 @@ compatibility_mode: call *%eax ud2 + .data + .align 4 compat_page_list: .fill 12,4,0 @@ -166,8 +168,8 @@ compat_pg_table: .long SYM_PHYS(compat_pg_table_l2) + 2*PAGE_SIZE + 0x01, 0 .long SYM_PHYS(compat_pg_table_l2) + 3*PAGE_SIZE + 0x01, 0 - .align 4096,0 - + .section .data.page_aligned, "aw", @progbits + .align PAGE_SIZE,0 compat_pg_table_l2: .macro identmap from=0, count=512 .if \count-1 diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S index 38ba8ba3a4..20f9f2dca4 100644 --- a/xen/arch/x86/xen.lds.S +++ b/xen/arch/x86/xen.lds.S @@ -53,6 +53,8 @@ SECTIONS } :text .data : { /* Data */ + . = ALIGN(PAGE_SIZE); + *(.data.page_aligned) *(.data) CONSTRUCTORS } :text